{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "colab_type": "text",
        "id": "view-in-github"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/iwatake2222/play_with_tensorrt/blob/master/pj_tensorrt_depth_lapdepth/00_doc/pytorch_pkl_2_onnx_LapDepth.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "etARG33fSObg"
      },
      "outputs": [],
      "source": [
        "!git clone https://github.com/tjqansthd/LapDepth-release.git --depth 1\n",
        "%cd LapDepth-release/\n",
        "!mkdir pretrained\n",
        "!cp ../drive/MyDrive/temp/LDRN_KITTI_ResNext101_pretrained_data.pkl ./pretrained/."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "XrXs7sCfS_PT"
      },
      "outputs": [],
      "source": [
        "!pip install geffnet\n",
        "!pip install torchinfo\n",
        "!pip install onnx-simplifier\n",
        "!pip install onnx\n",
        "!pip install onnxruntime"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "kb4VGmP2SBbj"
      },
      "outputs": [],
      "source": [
        "!python demo.py --model_dir ./pretrained/LDRN_KITTI_ResNext101_pretrained_data.pkl --img_dir ./example/kitti_demo.jpg --pretrained KITTI"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 10,
      "metadata": {
        "id": "Vpu3TGkcgvhE"
      },
      "outputs": [],
      "source": [
        "WIDTH = 512\n",
        "HEIGHT = 256\n",
        "ONNX_FILENAME = \"LDRN_KITTI_ResNext101_\" + str(HEIGHT) + \"_\" + str(WIDTH) + \".onnx\"\n",
        "ONNX_SIMPLE_FILENAME = \"LDRN_KITTI_ResNext101_\" + str(HEIGHT) + \"_\" + str(WIDTH) + \"_sim.onnx\""
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "7aLZZFCDVhOm"
      },
      "outputs": [],
      "source": [
        "import argparse\n",
        "from torchinfo import summary\n",
        "import torch\n",
        "import torch.onnx\n",
        "from model import LDRN\n",
        "\n",
        "class args():\n",
        "    def __init__(self):\n",
        "        self.model_dir = './pretrained/LDRN_KITTI_ResNext101_pretrained_data.pkl'\n",
        "        self.encoder = 'ResNext101'\n",
        "        self.pretrained = 'KITTI'\n",
        "        self.norm = 'BN'\n",
        "        self.n_Group = 32\n",
        "        self.reduction = 16\n",
        "        self.act = 'ReLU'\n",
        "        self.max_depth = 80.0\n",
        "        self.lv6 = 'store_true'\n",
        "        self.rank = 0\n",
        "args = args()\n",
        "\n",
        "model = LDRN(args)\n",
        "model = model.cpu()\n",
        "# model = model.cuda()\n",
        "# model = torch.nn.DataParallel(model)\n",
        "# model.load_state_dict(torch.load(args.model_dir))\n",
        "# https://qiita.com/tand826/items/fd11f84e1b015b88642e\n",
        "from collections import OrderedDict\n",
        "def fix_key(state_dict):\n",
        "    new_state_dict = OrderedDict()\n",
        "    for k, v in state_dict.items():\n",
        "        if k.startswith('module.'):\n",
        "            k = k[7:]\n",
        "        new_state_dict[k] = v\n",
        "    return new_state_dict\n",
        "model.load_state_dict(fix_key(torch.load(args.model_dir)))\n",
        "\n",
        "model.eval()\n",
        "\n",
        "summary(model, input_size=(1, 3, HEIGHT, WIDTH))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "bc3fqkRpXpw8"
      },
      "outputs": [],
      "source": [
        "dummy_input = torch.randn(1, 3, HEIGHT, WIDTH, requires_grad=True)\n",
        "dummy_input = dummy_input.cuda()\n",
        "torch.onnx.export(model, dummy_input, ONNX_FILENAME, opset_version=11)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "0FMBxnc9bfFl"
      },
      "outputs": [],
      "source": [
        "# !python -m onnxsim {ONNX_FILENAME} {ONNX_SIMPLE_FILENAME}\n",
        "!python -m onnxsim --skip-fuse-bn {ONNX_FILENAME} {ONNX_SIMPLE_FILENAME}"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "E2nCoAHUYxje"
      },
      "outputs": [],
      "source": [
        "!cp {ONNX_SIMPLE_FILENAME} ../drive/MyDrive/temp/."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "S9Bc7a4tcisd"
      },
      "source": [
        "# Inference"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "aW09PFR3b2T0"
      },
      "outputs": [],
      "source": [
        "import numpy as np\n",
        "import cv2\n",
        "from google.colab.patches import cv2_imshow\n",
        "\n",
        "img_original = cv2.imread(\"./example/kitti_demo.jpg\")\n",
        "cv2_imshow(img_original)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 13,
      "metadata": {
        "id": "lecGxKO8cPRQ"
      },
      "outputs": [],
      "source": [
        "def preprocess(img_original):\n",
        "  shape = (WIDTH, HEIGHT) \n",
        "  mean = np.array([0.485, 0.456, 0.406])\n",
        "  std = np.array([0.229, 0.224, 0.225])\n",
        "  img = img_original.copy()\n",
        "  img = cv2.resize(img, shape)\n",
        "  img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n",
        "  img = img / 255.\n",
        "  img = (img - mean) / std\n",
        "  img = img.astype(np.float32)\n",
        "  # tensor = cv2.dnn.blobFromImage(img)\n",
        "  tensor = img.transpose(2, 0, 1).reshape(1, 3, HEIGHT, WIDTH)\n",
        "  return tensor"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 14,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 189
        },
        "id": "jmAUv1lgce0n",
        "outputId": "06a7a868-9c15-46a6-a138-b9b3b1d26177"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "import onnx\n",
        "import onnxruntime\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "%matplotlib inline\n",
        "\n",
        "''' Load model '''\n",
        "sess = onnxruntime.InferenceSession(ONNX_SIMPLE_FILENAME)\n",
        "\n",
        "''' Run inference '''\n",
        "input = preprocess(img_original)\n",
        "input_name = sess.get_inputs()[0].name\n",
        "output = sess.run(None, {input_name: input})\n",
        "\n",
        "''' Show result '''\n",
        "out = np.array(output[5])\n",
        "out = np.squeeze(out, 0)\n",
        "out = np.squeeze(out, 0)\n",
        "out = out[int(out.shape[0] * 0.18) : , : ]\n",
        "out = out * 256.0\n",
        "plt.imshow(out)\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 15,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "xd417WkvthUJ",
        "outputId": "f284b148-fd30-41ca-d127-3508ff65bc2d"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "(71.44486, 8.248258)"
            ]
          },
          "execution_count": 15,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "out = out / 256.0\n",
        "np.amax(out), np.amin(out)"
      ]
    }
  ],
  "metadata": {
    "accelerator": "GPU",
    "colab": {
      "authorship_tag": "ABX9TyPaIwXQjG9C11V7dYhBuATz",
      "collapsed_sections": [],
      "include_colab_link": true,
      "mount_file_id": "1-enJKzyw6vmvaEcVFFCW6QGeV2BcDKeP",
      "name": "pytorch_pkl_2_onnx_LapDepth.ipynb",
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
